RegExp (রেগুলার এক্সপ্রেশন) একটি শক্তিশালী টুল যা দিয়ে আমরা সহজ থেকে জটিল প্যাটার্নও মেলাতে পারি। কিন্তু যখন প্যাটার্ন আরও জটিল হয়ে ওঠে, তখন এর কার্যকারিতা এবং পারফরম্যান্স বেশ কিছু চ্যালেঞ্জ তৈরি করতে পারে। এই চ্যালেঞ্জগুলো কাটিয়ে উঠতে হলে complex pattern matching এবং case studies ব্যবহার করে বিভিন্ন সমস্যা সমাধান করতে হয়।
Complex Pattern Matching
Complex pattern matching তখন ঘটে যখন আপনি এমন একটি প্যাটার্ন তৈরি করেন যা সাধারণ কিছু অক্ষরের বা সিম্পল সিকোয়েন্সের চেয়ে অনেক বেশি কিছু মেলাতে পারে, যেমন:
- একাধিক optional group,
- দীর্ঘ alternations,
- lookahead এবং lookbehind assertions,
- nested groups,
- এবং বিভিন্ন কোয়ান্টিফায়ার একসাথে ব্যবহার।
যত বেশি জটিল প্যাটার্ন হবে, তত বেশি computational resources এর প্রয়োজন হবে এবং পারফরম্যান্স সমস্যার ঝুঁকি তৈরি হবে।
Complex Pattern Matching উদাহরণ
১. ইমেইল ভ্যালিডেশন
ইমেইল ঠিকানা সঠিকভাবে যাচাই করতে হলে আমাদের একটি complex regular expression তৈরি করতে হবে, যা ঠিকানা, @ চিহ্ন, এবং ডোমেইন নাম ঠিকভাবে চেক করবে।
RegExp প্যাটার্ন:
let emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
let testEmail = "example@domain.com";
console.log(emailRegex.test(testEmail)); // true
এখানে, ^[a-zA-Z0-9._%+-]+ দ্বারা ব্যবহারকারী নামের অংশটি যাচাই করা হচ্ছে, এরপর @ এবং ডোমেইন যাচাই করতে +[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ব্যবহার করা হয়েছে।
এই প্যাটার্নটি একাধিক অংশের সমন্বয়ে তৈরি, তাই এটি complex।
২. URL ভ্যালিডেশন
URL যাচাই করার জন্য একটি জটিল প্যাটার্ন প্রয়োজন হতে পারে, বিশেষ করে যদি আপনি পুরো URL structure সহ ডোমেইন, পোর্ট নম্বর, এবং পাথ সহ যাচাই করতে চান।
RegExp প্যাটার্ন:
let urlRegex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}(:\d+)?(\/[a-zA-Z0-9#]+\/?)*$/;
let testURL = "https://www.example.com:8080/path/to/resource";
console.log(urlRegex.test(testURL)); // true
এখানে, আমরা optional protocol (https?://), domain name, port number এবং path যাচাই করছি। এটি একটি জটিল প্যাটার্ন এবং বেশ কয়েকটি অংশের সমন্বয়ে গঠিত।
৩. ফাইল এক্সটেনশন চেক
ফাইলের এক্সটেনশন যাচাই করতে এমন একটি RegExp প্রয়োজন, যা নির্দিষ্ট এক্সটেনশন (যেমন .jpg, .png, .pdf) চেক করতে পারে। এই প্যাটার্নটি বিভিন্ন এক্সটেনশনের জন্য alternation ব্যবহার করে।
RegExp প্যাটার্ন:
let fileRegex = /(\.jpg|\.png|\.gif|\.bmp)$/i;
let testFile = "image.jpg";
console.log(fileRegex.test(testFile)); // true
এখানে, (\.jpg|\.png|\.gif|\.bmp) অংশে একাধিক এক্সটেনশন যাচাই করা হচ্ছে।
Case Studies: Complex Pattern Matching in Real-World Applications
১. Web Scraping
ওয়েব স্ক্র্যাপিংয়ে বিভিন্ন ধরনের ডেটা সংগ্রহ করার জন্য, যেমন ওয়েব পৃষ্ঠার শিরোনাম, লিঙ্ক, বা নির্দিষ্ট কন্টেন্টের সাথে সম্পর্কিত ডেটা। এখানে, সাধারণত HTML ট্যাগের ভিতর থেকে তথ্য বের করতে জটিল RegExp প্যাটার্ন ব্যবহার করা হয়।
Case Study Example: HTML Tag Matching
ধরা যাক, আপনি HTML পৃষ্ঠার মধ্যে থেকে সব <a> ট্যাগ বের করতে চান। এটি একটি complex pattern matching হতে পারে কারণ HTML কখনোই একরকমভাবে স্ট্রাকচারড থাকে না।
RegExp প্যাটার্ন:
let htmlString = '<div><a href="http://example.com">Example</a></div>';
let linkRegex = /<a\s+href="([^"]+)">([^<]+)<\/a>/g;
let result;
while ((result = linkRegex.exec(htmlString)) !== null) {
console.log(`URL: ${result[1]}, Text: ${result[2]}`);
}
এখানে, RegExp প্যাটার্ন (<a\s+href="([^"]+)">([^<]+)<\/a>) ব্যবহার করে <a> ট্যাগের URL এবং text বের করছে। এটি একটি জটিল প্যাটার্ন যেখানে গ্রুপ এবং বিশেষ চিহ্নের ব্যবহার রয়েছে।
২. Log File Analysis
সার্ভার লগ ফাইল বিশ্লেষণের সময়, আপনাকে বিভিন্ন লোগ ইনপুট থেকে নির্দিষ্ট তথ্য বের করতে হতে পারে। যেমন, ওয়েব সার্ভারের লগ ফাইল থেকে IP address, status code, এবং timestamp বের করা।
Case Study Example: Server Log Parsing
একটি ওয়েব সার্ভার লগ ফাইল থেকে নির্দিষ্ট তথ্য বের করার জন্য একটি জটিল RegExp প্যাটার্ন তৈরি করা প্রয়োজন।
RegExp প্যাটার্ন:
let logString = '192.168.1.1 - - [10/Oct/2024:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 512';
let logRegex = /^(\S+) \S+ \S+ \[([^\]]+)\] "(\S+) (\S+) \S+" (\d+) (\d+)$/;
let result = logRegex.exec(logString);
console.log(`IP Address: ${result[1]}`);
console.log(`Timestamp: ${result[2]}`);
console.log(`Request Type: ${result[3]}`);
console.log(`Requested Resource: ${result[4]}`);
console.log(`Status Code: ${result[5]}`);
console.log(`Response Size: ${result[6]}`);
এখানে, সার্ভার লগের বিভিন্ন অংশ যেমন IP address, timestamp, request type ইত্যাদি আলাদা করা হচ্ছে। এটি একটি খুবই জটিল প্যাটার্ন যেখানে একাধিক গ্রুপ এবং কোয়ান্টিফায়ার ব্যবহার করা হয়েছে।
৩. Form Validation
ফর্মের ইনপুট যাচাই করার জন্য অনেক সময় আমাদের জটিল RegExp প্যাটার্ন ব্যবহার করতে হয়। উদাহরণস্বরূপ, ইউজার যখন পাসওয়ার্ড ইনপুট করে, তখন পাসওয়ার্ডের শক্তি পরীক্ষা করার জন্য একটি জটিল প্যাটার্ন হতে পারে।
Case Study Example: Password Validation
ধরা যাক, পাসওয়ার্ডে কমপক্ষে একটি বড় হাতের অক্ষর, একটি ছোট হাতের অক্ষর, একটি সংখ্যা এবং একটি স্পেশাল ক্যারেক্টার থাকতে হবে।
RegExp প্যাটার্ন:
let passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
let testPassword = "Password123!";
console.log(passwordRegex.test(testPassword)); // true
এখানে, (?=.*[a-z]), (?=.*[A-Z]), (?=.*\d), এবং (?=.*[@$!%*?&]) অংশগুলো সমস্ত প্রয়োজনীয় শর্ত যাচাই করছে।
Complex pattern matching RegExp-এ বিভিন্ন ক্ষেত্রে ব্যবহৃত হতে পারে, যেমন ডেটা ভ্যালিডেশন, ফাইল প্রসেসিং, ওয়েব স্ক্র্যাপিং, এবং লগ ফাইল বিশ্লেষণ। তবে, যখন প্যাটার্ন জটিল হয়, তখন performance এবং security সমস্যা তৈরি হতে পারে। সুতরাং, RegExp তৈরি করার সময় সেগুলির কার্যকারিতা এবং নিরাপত্তা যাচাই করা গুরুত্বপূর্ণ।
Case studies দেখিয়েছে যে RegExp এর মাধ্যমে কতটা শক্তিশালী এবং বিভিন্ন ক্ষেত্রে এর প্রয়োগ কতটা গুরুত্বপূর্ণ, তবে সঠিকভাবে ব্যবহার না করলে তা সিস্টেমের পারফরম্যান্স এবং নিরাপত্তায় সমস্যা সৃষ্টি করতে পারে।
JavaScript-এ email address validation একটি সাধারণ কিন্তু গুরুত্বপূর্ণ টাস্ক, যেটি ওয়েব ফর্মের মাধ্যমে ব্যবহারকারীর ইনপুট যাচাই করার জন্য ব্যবহৃত হয়। যদিও সাধারণভাবে email validation করার জন্য বেশ কিছু পদ্ধতি রয়েছে, তবে একটি সঠিক RegExp (রেগুলার এক্সপ্রেশন) এর মাধ্যমে email ঠিকানা যাচাই করার উপায়টি বেশ কার্যকর।
Email Validation-এর জন্য RegExp ব্যবহার
একটি সাধারণ RegExp এর মাধ্যমে email address এর বৈধতা পরীক্ষা করা যায়। তবে এটি মনে রাখতে হবে যে, প্রাকৃতিক email ঠিকানাগুলির অনেক ভিন্ন ভিন্ন ফর্ম থাকতে পারে, যেমনঃ
- Basic Structure:
local-part@domain - Local Part: এটি সাধারণত অক্ষর, সংখ্যা, ডট (.), হাইফেন (-), আন্ডারস্কোর (_) বা কিছু বিশেষ চিহ্ন ধারণ করতে পারে।
- Domain Part: এটি ডোমেইন নামের অংশ, যা সাধারণত এক বা একাধিক শব্দের সমষ্টি হয়, যার মধ্যে একটি ডট (.) থাকে, যেমন
gmail.comবাexample.co.uk।
সাধারণ Email Validation RegExp
নিম্নলিখিত RegExp একটি মৌলিক email address validation এর জন্য ব্যবহৃত হতে পারে:
let emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
এটি সাধারণ email প্যাটার্নগুলিকে যাচাই করবে যা:
- local-part: এক বা একাধিক অক্ষর, সংখ্যা, ডট (.), হাইফেন (-), বা আন্ডারস্কোর (_) থাকতে পারে।
- @: এটি অবশ্যই থাকতে হবে, যা local-part এবং domain part কে আলাদা করে।
- domain: এক বা একাধিক অক্ষর, সংখ্যা, ডট (.) থাকতে পারে।
- top-level domain (TLD): এটি অবশ্যই কমপক্ষে দুইটি অক্ষরের হতে হবে (যেমন .com, .org, .net ইত্যাদি)।
উদাহরণ
let emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
let email = "user@example.com";
if (emailRegex.test(email)) {
console.log("Valid email address");
} else {
console.log("Invalid email address");
}
এখানে, emailRegex.test(email) ব্যবহার করে email ঠিকানাটি পরীক্ষা করা হচ্ছে। যদি email ঠিকানা বৈধ হয়, তবে true রিটার্ন হবে এবং "Valid email address" মেসেজটি কনসোলে প্রিন্ট হবে।
বিস্তারিত ব্যাখ্যা
^[a-zA-Z0-9._-]+: এই অংশটি local-part কে বর্ণনা করে, যেখানে ছোট-বড় অক্ষর (a-zA-Z), সংখ্যা (0-9), ডট (.), আন্ডারস্কোর (_), এবং হাইফেন (-) থাকতে পারে।+ফ্ল্যাগটি নির্দেশ করে যে এক বা একাধিক চরিত্র থাকতে হবে।@: এটি একটি স্থির চিহ্ন, যা অবশ্যই email ঠিকানার মধ্যে থাকতে হবে এবং local-part ও domain কে আলাদা করে।[a-zA-Z0-9.-]+: এই অংশটি domain অংশের জন্য। এখানে ছোট-বড় অক্ষর (a-zA-Z), সংখ্যা (0-9), ডট (.), এবং হাইফেন (-) থাকতে পারে।\.: ডট (.) চিহ্নটি domain name এবং TLD (Top-Level Domain) এর মধ্যে থাকবেই, তাই এটি\.দিয়ে নির্দিষ্ট করা হয়েছে।[a-zA-Z]{2,6}$: এই অংশটি TLD (যেমন.com,.org,.netইত্যাদি) নির্দেশ করে, যেখানে দুই থেকে ছয়টি অক্ষর থাকতে হবে।
কিছু উদাহরণ
Valid email addresses:
user@example.comjohn.doe123@example.cofirst_last@example.org
Invalid email addresses:
user@example(ডোমেইন অংশে TLD নেই)user@.com(ডোমেইন অংশে কিছু নেই)user@com(ডোমেইন অংশে TLD নেই)@example.com(local-part নেই)
Limitations of the Basic Regex
উপরোক্ত RegExp সাধারণভাবে বেশিরভাগ email ঠিকানাকে ভ্যালিডেট করে, তবে এটি কিছু বিশেষ ক্ষেত্রে সঠিক হতে নাও পারে:
- কিছু email ঠিকানা বিশেষ চিহ্ন যেমন "+" বা "%" থাকতে পারে, যা এই RegExp কভার করে না।
- কিছু email ঠিকানায় নতুন TLD গুলি (যেমন
.photography,.tech) থাকতে পারে, যা ৬টি অক্ষরের সীমাবদ্ধতার মধ্যে পড়েনি।
যেহেতু email ঠিকানার বৈধতা আরও জটিল হতে পারে, তাই কখনো কখনো একেবারে নিখুঁত validation করার জন্য বিশেষ লাইব্রেরি বা সার্ভার সাইড যাচাইয়ের উপর নির্ভর করা ভাল।
সারাংশ
JavaScript-এ email validation করার জন্য একটি সাধারণ RegExp ব্যবহার করা যেতে পারে, যা basic email address গুলিকে যাচাই করে। তবে এটি সব ক্ষেত্রে ১০০% সঠিক নাও হতে পারে, কারণ email ঠিকানাগুলির কাঠামো অনেক ধরনের এবং কিছু নতুন বৈশিষ্ট্য থাকতে পারে যা এই RegExp কভার করে না। এজন্য, সার্ভার সাইড validation এবং প্রয়োজনে বাইরের লাইব্রেরি ব্যবহার করা যেতে পারে।
URL (Uniform Resource Locator) এবং Domain (ডোমেইন) Validation হল একটি গুরুত্বপূর্ণ প্রক্রিয়া, যেখানে আপনি নির্দিষ্ট প্যাটার্নের মাধ্যমে URL এবং Domain এর সঠিকতা যাচাই করেন। এটি ওয়েব ডেভেলপমেন্ট এবং অ্যাপ্লিকেশন ডিজাইনিং-এ বিশেষ করে ইউজার ইনপুট যাচাই করার সময় অত্যন্ত গুরুত্বপূর্ণ।
URL Validation
URL এর কাঠামো নির্দিষ্ট নিয়ম অনুসরণ করে এবং URL ভ্যালিডেশন RegExp (Regular Expression) ব্যবহার করে URL এর সঠিকতা পরীক্ষা করা যায়। একটি সাধারণ URL হতে পারে:
https://www.example.com/path?query=example#fragment
URL ভ্যালিডেশন সাধারণত স্কিমা (http/https), হোস্ট, পাথ, কোয়েরি প্যারামিটার এবং ফ্র্যাগমেন্ট এর ভিত্তিতে করা হয়।
সাধারণ URL Validation RegExp
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
ব্যাখ্যা:
^(https?:\/\/)?– URL যদি http বা https স্কিমা দিয়ে শুরু হয়, তবে সঠিক।([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}– ডোমেইন অংশ, যেখানে কমপক্ষে একটি সাবডোমেইন (যেমন www) এবং ডোমেইন এক্সটেনশন (যেমন .com) থাকতে হবে।(\/[a-zA-Z0-9-_.]*)*– পাথ অংশ যা অক্ষর, সংখ্যা, ড্যাশ, আন্ডারস্কোর বা ডট নিয়ে গঠিত হতে পারে।(\?[a-zA-Z0-9=&]*)?– কোয়েরি প্যারামিটার অংশ যা প্রশ্ন চিহ্ন দিয়ে শুরু হয় এবং কীগুলি ও মানগুলির মধ্যবর্তী সমীকরণ চিহ্নে বিভক্ত থাকে।(# [a-zA-Z0-9-]*)?– ফ্র্যাগমেন্ট অংশ যা হ্যাশ চিহ্ন দিয়ে শুরু হয় এবং একাধিক অক্ষরের মধ্যে থাকতে পারে।
URL Validation উদাহরণ
let regex = /^(https?:\/\/)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,6}(\/[a-zA-Z0-9-_.]*)*(\?[a-zA-Z0-9=&]*)?(#[a-zA-Z0-9-]*)?$/;
let url = "https://www.example.com/path?query=example#fragment";
console.log(regex.test(url)); // true
এই RegExp প্যাটার্নটি একটি URL যাচাই করবে এবং দেখবে যে এটি সঠিক কাঠামোয় আছে কিনা।
Domain Validation
Domain validation সাধারণত ডোমেইন নামের সঠিকতা পরীক্ষা করার জন্য করা হয়। একটি বৈধ ডোমেইন নাম সাধারণত নিম্নলিখিত বৈশিষ্ট্যগুলো অনুসরণ করে:
- এটি অক্ষর, সংখ্যা, বা ড্যাশ (-) দিয়ে গঠিত হতে পারে।
- এটি কোনো বিশেষ চিহ্ন বা স্পেস ধারণ করতে পারে না।
- এটি অন্তত দুটি অংশে বিভক্ত থাকে (যেমন example.com)।
সাধারণ Domain Validation RegExp
let regex = /^[a-zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63})*$/;
ব্যাখ্যা:
^[a-zA-Z0-9-]{1,63}– ডোমেইন অংশে একাধিক অক্ষর, সংখ্যা বা ড্যাশ থাকতে পারে এবং এটি 1 থেকে 63 অক্ষরের মধ্যে হতে হবে।(\.[a-zA-Z0-9-]{1,63})*– একাধিক সাবডোমেইন বা ডোমেইন এক্সটেনশন (যেমন .com, .org) থাকতে পারে এবং প্রতিটির দৈর্ঘ্য 1 থেকে 63 অক্ষরের মধ্যে থাকবে।
Domain Validation উদাহরণ
let regex = /^[a-zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63})*$/;
let domain = "example.com";
console.log(regex.test(domain)); // true
এখানে, "example.com" একটি বৈধ ডোমেইন নাম। এটি RegExp প্যাটার্নের সাথে মিলছে, তাই আউটপুট হবে true।
URL এবং Domain Validation এর মধ্যে পার্থক্য
- URL Validation: একটি URL-এ স্কিমা, হোস্ট (ডোমেইন), পাথ, কোয়েরি প্যারামিটার এবং ফ্র্যাগমেন্ট থাকতে পারে। URL Validation নিশ্চিত করে যে এটি একটি সঠিক URL কাঠামো অনুসরণ করছে।
- Domain Validation: একটি ডোমেইন নামের মধ্যে শুধু হোস্ট নাম এবং এক্সটেনশন থাকে (যেমন example.com)। এটি সাধারণত ওয়েব ডোমেইন নামের বৈধতা যাচাই করতে ব্যবহৃত হয়, এবং এতে স্কিমা বা পাথ থাকেনা।
সারাংশ
URL Validation একটি পূর্ণ URL এর কাঠামো যাচাই করার প্রক্রিয়া, যা স্কিমা, ডোমেইন, পাথ, কোয়েরি এবং ফ্র্যাগমেন্ট অন্তর্ভুক্ত করে। অন্যদিকে, Domain Validation শুধুমাত্র ডোমেইন নামের সঠিকতা যাচাই করে, যেখানে ডোমেইন নামের অংশগুলি সঠিকভাবে গঠিত থাকা প্রয়োজন। RegExp ব্যবহার করে আপনি সহজেই URL এবং Domain এর সঠিকতা যাচাই করতে পারেন।
প্রতিটি ওয়েব অ্যাপ্লিকেশন বা ফর্মে ইউজারের ইনপুটের সঠিকতা নিশ্চিত করতে Phone Number এবং Postal Code (ফোন নম্বর এবং পোস্টাল কোড) ভ্যালিডেশন অত্যন্ত গুরুত্বপূর্ণ। RegExp (Regular Expressions) ব্যবহার করে এই ধরনের ইনপুট সঠিকভাবে যাচাই করা যায়। এখানে আমরা দেখব কীভাবে ফোন নম্বর এবং পোস্টাল কোড ভ্যালিডেশন করা যায়।
Phone Number Validation
ফোন নম্বরের জন্য একটি উপযুক্ত RegExp প্যাটার্ন তৈরি করার মাধ্যমে আমরা নিশ্চিত করতে পারি যে, ইউজার সঠিক ফর্ম্যাটে ফোন নম্বর প্রদান করছে। সাধারণত, ফোন নম্বরের ক্ষেত্রে বিভিন্ন দেশের জন্য আলাদা ফর্ম্যাট থাকতে পারে, তবে এখানে সাধারণ কিছু উদাহরণ দেখানো হয়েছে।
উদাহরণ 1: আন্তর্জাতিক ফোন নম্বর
একটি আন্তর্জাতিক ফোন নম্বরের জন্য সাধারণভাবে + চিহ্ন, দেশ কোড এবং ফোন নম্বর থাকে। যেমন: +1-800-555-5555।
RegExp প্যাটার্ন:
let regex = /^\+?[1-9]\d{1,14}$/;
এখানে:
^: প্যাটার্নের শুরু।\+?: একটি ঐচ্ছিক+চিহ্ন।[1-9]: প্রথম ডিজিটটি ১ থেকে ৯ এর মধ্যে হতে হবে (যে কোনও দেশ কোডে ০ শুরু হয় না)।\d{1,14}: ১ থেকে ১৪টি ডিজিট।$: প্যাটার্নের শেষ।
উদাহরণ:
let regex = /^\+?[1-9]\d{1,14}$/;
let phoneNumber = "+1-800-555-5555";
console.log(regex.test(phoneNumber)); // true
উদাহরণ 2: মার্কিন ফোন নম্বর (10 ডিজিট)
মার্কিন ফোন নম্বর সাধারণত ৩টি অংশে বিভক্ত থাকে, যেমন: (XXX) XXX-XXXX বা XXX-XXX-XXXX।
RegExp প্যাটার্ন:
let regex = /^(?:\(\d{3}\) |\d{3}-)\d{3}-\d{4}$/;
এখানে:
(?: ... ): Non-capturing group, যা গ্রুপিং করবে কিন্তু রেফারেন্স করবে না।\d{3}: ৩টি ডিজিট।\(\d{3}\): ৩টি ডিজিটের মধ্যে প্যারেন্টেসিসে রাখা।|: অথবা চিহ্ন, যা দুটি বিকল্পের মধ্যে মিল করবে।
উদাহরণ:
let regex = /^(?:\(\d{3}\) |\d{3}-)\d{3}-\d{4}$/;
let phoneNumber = "(800) 555-5555";
console.log(regex.test(phoneNumber)); // true
Postal Code Validation
পোস্টাল কোডের ক্ষেত্রে বিভিন্ন দেশের জন্য ভিন্ন ভিন্ন নিয়ম থাকে। তবে সাধারণত, এটি কয়েকটি ডিজিট বা অক্ষর দিয়ে গঠিত থাকে। RegExp ব্যবহার করে নির্দিষ্ট একটি দেশের পোস্টাল কোড ভ্যালিডেট করা সম্ভব।
উদাহরণ 1: যুক্তরাষ্ট্রের পোস্টাল কোড
যুক্তরাষ্ট্রের পোস্টাল কোড ৫ ডিজিটের অথবা ৯ ডিজিটের হতে পারে, যেমন: 12345 বা 12345-6789।
RegExp প্যাটার্ন:
let regex = /^\d{5}(-\d{4})?$/;
এখানে:
\d{5}: ৫টি ডিজিট।(-\d{4})?: ঐচ্ছিক অংশ, যা ৪টি ডিজিটের সাথে-চিহ্ন থাকতে পারে।
উদাহরণ:
let regex = /^\d{5}(-\d{4})?$/;
let postalCode = "12345-6789";
console.log(regex.test(postalCode)); // true
উদাহরণ 2: কানাডার পোস্টাল কোড
কানাডার পোস্টাল কোড সাধারণত A1A 1A1 এর মতো একটি ফরম্যাটে থাকে, যেখানে A হলো অক্ষর এবং 1 হলো ডিজিট।
RegExp প্যাটার্ন:
let regex = /^[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d$/;
এখানে:
[A-Za-z]: একটি অক্ষর।\d: একটি ডিজিট।- স্পেস: দুটি গ্রুপের মধ্যে স্পেস থাকতে হবে।
উদাহরণ:
let regex = /^[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d$/;
let postalCode = "K1A 0B1";
console.log(regex.test(postalCode)); // true
সারাংশ
Phone Number Validation এবং Postal Code Validation RegExp ব্যবহার করে সঠিক ইনপুট যাচাই করা যায়। ফোন নম্বর এবং পোস্টাল কোডের জন্য বিভিন্ন দেশের নির্দিষ্ট নিয়ম অনুযায়ী প্যাটার্ন তৈরি করা সম্ভব:
- ফোন নম্বরের জন্য ইন্টারন্যাশনাল বা দেশীয় ফরম্যাট ব্যবহার করা হয়।
- পোস্টাল কোডের জন্য দেশভিত্তিক ফরম্যাট চেক করা হয়, যেমন যুক্তরাষ্ট্রের ৫ অথবা ৯ ডিজিটের পোস্টাল কোড অথবা কানাডার অক্ষর ও ডিজিট সমন্বিত ফরম্যাট।
এভাবে RegExp ব্যবহার করে আপনি ইনপুটের সঠিকতা নিশ্চিত করতে পারবেন এবং ফর্ম ভ্যালিডেশন সহজ এবং দ্রুত করতে পারবেন।
RegExp-এ Complex Text Patterns Matching এর মাধ্যমে আপনি নির্দিষ্ট কাঠামো অনুসরণ করা টেক্সটের ধরন যেমন Hashtags (#), Mentions (@) বা অন্যান্য কাস্টম প্যাটার্নগুলো খুঁজে বের করতে পারেন। এই ধরনের প্যাটার্ন সাধারণত সোশ্যাল মিডিয়া বা ব্লগ প্ল্যাটফর্মে ব্যবহৃত হয়, যেখানে নির্দিষ্ট চিহ্নের পর একটি শব্দ বা নাম আসে। RegExp-এর মাধ্যমে আপনি সহজেই এই ধরনের প্যাটার্নগুলো শনাক্ত এবং প্রক্রিয়া করতে পারেন।
Hashtags (#)
Hashtags সাধারণত # চিহ্ন দিয়ে শুরু হয় এবং তারপর একটি বা একাধিক অক্ষর, সংখ্যা, অথবা আন্ডারস্কোর থাকে। RegExp দিয়ে আপনি এই ধরনের প্যাটার্ন খুঁজে বের করতে পারেন।
Hashtag Matching RegExp উদাহরণ
let regex = /#\w+/g;
let str = "I love #JavaScript and #React!";
let matches = str.match(regex);
console.log(matches); // ["#JavaScript", "#React"]
এখানে, / #\w+/g প্যাটার্নটি:
#: একটি হ্যাশট্যাগ চিহ্নের জন্য।\w+: এক বা একাধিক word character (অক্ষর, সংখ্যা, বা আন্ডারস্কোর)।g: গ্লোবাল ফ্ল্যাগ, যা পুরো স্ট্রিং স্ক্যান করতে সাহায্য করে।
এটি #JavaScript এবং #React হ্যাশট্যাগগুলো মেলে দিয়েছে।
Mentions (@)
Mentions সাধারণত @ চিহ্ন দিয়ে শুরু হয় এবং তারপর ব্যবহারকারীর নাম বা আইডি থাকে। RegExp ব্যবহার করে আপনি @ চিহ্নের পরে থাকা নাম বা আইডি শনাক্ত করতে পারেন।
Mention Matching RegExp উদাহরণ
let regex = /@\w+/g;
let str = "Hello @john, meet @doe!";
let matches = str.match(regex);
console.log(matches); // ["@john", "@doe"]
এখানে, / @\w+/g প্যাটার্নটি:
@: একটি মেনশন চিহ্নের জন্য।\w+: এক বা একাধিক word character (অক্ষর, সংখ্যা, বা আন্ডারস্কোর)।g: গ্লোবাল ফ্ল্যাগ, যা পুরো স্ট্রিং স্ক্যান করতে সাহায্য করে।
এটি @john এবং @doe মেনশনগুলো খুঁজে পেয়ে মেলিয়েছে।
Complex Patterns: Hashtags and Mentions একসাথে
আপনি যদি একই স্ট্রিংয়ের মধ্যে hashtags এবং mentions একসাথে খুঁজতে চান, তবে একাধিক প্যাটার্নের সমন্বয়ে একটি RegExp তৈরি করতে পারেন।
উদাহরণ: Hashtags এবং Mentions একসাথে
let regex = /(?:#\w+|@\w+)/g;
let str = "Hello @john, check out #JavaScript and #React!";
let matches = str.match(regex);
console.log(matches); // ["@john", "#JavaScript", "#React"]
এখানে, (?:#\w+|@\w+) প্যাটার্নটি:
(?: ...): Non-capturing group, যা গ্রুপিং ছাড়া প্যাটার্নগুলো মিলাবে।#\w+: একটি হ্যাশট্যাগ খুঁজবে, যার পর word character থাকবে।@\w+: একটি মেনশন খুঁজবে, যার পর word character থাকবে।|: OR অপারেটর, যা দুটি শর্তের মধ্যে মিল খুঁজতে সাহায্য করে।
এটি @john, #JavaScript, এবং #React মেলাচ্ছে।
More Complex Pattern Examples
আপনি আরও জটিল প্যাটার্ন তৈরি করতে পারেন, যেমন:
- Hashtags যেগুলিতে শুধুমাত্র অক্ষর এবং সংখ্যার পাশাপাশি হাইফেন (-) থাকতে পারে।
- Mentions যেগুলিতে অক্ষরের পাশাপাশি ডট (.) বা হাইফেন (-) থাকতে পারে।
উদাহরণ: Complex Hashtags
let regex = /#\w+(-\w+)*\b/g;
let str = "Check out #javaScript-101 and #React-Versions!";
let matches = str.match(regex);
console.log(matches); // ["#javaScript-101", "#React-Versions"]
এখানে, #\w+(-\w+)*\b প্যাটার্নটি:
#: হ্যাশট্যাগ চিহ্ন।\w+: শব্দ চরিত্র।(-\w+)*: এক বা একাধিক হাইফেন (-) এবং তারপর একটি শব্দ চরিত্র।\b: শব্দের সীমানা।
এটি #javaScript-101 এবং #React-Versions মেলাবে।
উদাহরণ: Complex Mentions
let regex = /@\w+(-\w+)*\b/g;
let str = "Hello @john_doe and @jane-doe!";
let matches = str.match(regex);
console.log(matches); // ["@john_doe", "@jane-doe"]
এখানে, @\w+(-\w+)*\b প্যাটার্নটি:
@: মেনশন চিহ্ন।\w+: শব্দ চরিত্র।(-\w+)*: এক বা একাধিক হাইফেন (-) এবং তারপর একটি শব্দ চরিত্র।\b: শব্দের সীমানা।
এটি @john_doe এবং @jane-doe মেলাবে।
সারাংশ
Hashtags এবং Mentions এর মতো Complex Text Patterns খুঁজে বের করতে RegExp অত্যন্ত কার্যকর। আপনি বিভিন্ন প্যাটার্নের সাথে যেমন #\w+ এবং @\w+ ব্যবহার করে সোশ্যাল মিডিয়া টেক্সট বা অন্যান্য স্ট্রিংয়ের মধ্যে নির্দিষ্ট চিহ্নের পর থাকা নাম বা ট্যাগ শনাক্ত করতে পারেন। এছাড়া, OR অপারেটর এবং non-capturing group ব্যবহার করে আপনি একাধিক প্যাটার্ন একসাথে মিলিয়ে আরও জটিল পরিস্থিতি মেলাতে পারবেন।
Read more